package com.curry.apiprovider.service;

import com.curry.apiprovider.exception.QuartzJobException;
import com.curry.livehelper.entity.domain.TQuartzInfo;
import org.quartz.JobDetail;
import org.quartz.SchedulerException;

import java.util.List;

/**
 * huangchao
 */
public interface ScheduleJobService {
    /**
     * 添加定时任务
     *
     * @param tQuartzInfo
     */
    public void add(TQuartzInfo tQuartzInfo) throws ClassNotFoundException,
            SchedulerException,QuartzJobException;

    /**
     * 获取所有JobDetail
     *
     * @return 结果集合
     */
    public List<JobDetail> getJobs();

    /**
     * 获取所有计划中的任务
     *
     * @return 结果集合
     */
    public List<TQuartzInfo> getAllScheduleJob();

    /**
     * 获取所有运行中的任务
     *
     * @return 结果集合
     */
    public List<TQuartzInfo> getAllRuningScheduleJob();

    /**
     * 获取所有的触发器
     *
     * @return 结果集合
     */
    public List<TQuartzInfo> getTriggersInfo();

    /**
     * 暂停任务
     *
     *
     */
    public void stopJob(Integer taskId) throws SchedulerException, QuartzJobException;

    /**
     * 恢复任务
     *
     * @param name  任务名
     * @param group 任务组
     */
    public void restartJob(String name, String group) throws SchedulerException;

    /**
     * 立马执行一次任务
     *
     * @param name  任务名
     * @param group 任务组
     */
    public void startNowJob(String name, String group)
            throws SchedulerException;

    /**
     * 删除任务
     *
     * @param name  任务名
     * @param group 任务组
     */
    public void delJob(String name, String group) throws SchedulerException;

    /**
     * 修改触发器时间
     *
     * @param name  任务名
     * @param group 任务组
     * @param cron  cron表达式
     */
    public void modifyTrigger(String name, String group, String cron) throws SchedulerException;

    /**
     * 暂停调度器
     */
    public void stopScheduler() throws SchedulerException;
}